/*
 * SonarQube JavaScript Plugin
 * Copyright (C) 2011-2025 SonarSource Sàrl
 * mailto:info AT sonarsource DOT com
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the Sonar Source-Available License Version 1, as published by SonarSource SA.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the Sonar Source-Available License for more details.
 *
 * You should have received a copy of the Sonar Source-Available License
 * along with this program; if not, see https://sonarsource.com/license/ssal/
 */
// copied from javascript-frontend/src/main/resources/org/sonar/javascript/tree/symbols/globals.json ,
// which should be deleted once the frontend migration is over
export const globalsByLibraries = {
  builtin: [
    'Array',
    'ArrayBuffer',
    'Boolean',
    'DataView',
    'Date',
    'Error',
    'EvalError',
    'Float32Array',
    'Float64Array',
    'Function',
    'Infinity',
    'Int16Array',
    'Int32Array',
    'Int8Array',
    'JSON',
    'Map',
    'Math',
    'NaN',
    'Number',
    'Object',
    'Promise',
    'Proxy',
    'RangeError',
    'ReferenceError',
    'Reflect',
    'RegExp',
    'Set',
    'String',
    'Symbol',
    'SyntaxError',
    'TypeError',
    'URIError',
    'Uint16Array',
    'Uint32Array',
    'Uint8Array',
    'Uint8ClampedArray',
    'WeakMap',
    'WeakSet',
    'constructor',
    'decodeURI',
    'decodeURIComponent',
    'encodeURI',
    'encodeURIComponent',
    'escape',
    'eval',
    'hasOwnProperty',
    'isFinite',
    'isNaN',
    'isPrototypeOf',
    'parseFloat',
    'parseInt',
    'propertyIsEnumerable',
    'toLocaleString',
    'toString',
    'unescape',
    'valueOf',
  ],

  // https://developer.mozilla.org/en-US/docs/Web/API/Window
  // https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
  browser: [
    'addEventListener',
    'alert',
    'AnalyserNode',
    'Animation',
    'AnimationEffectReadOnly',
    'AnimationEffectTiming',
    'AnimationEffectTimingReadOnly',
    'AnimationEvent',
    'AnimationPlaybackEvent',
    'AnimationTimeline',
    'applicationCache',
    'ApplicationCache',
    'ApplicationCacheErrorEvent',
    'atob',
    'Attr',
    'Audio',
    'AudioBuffer',
    'AudioBufferSourceNode',
    'AudioContext',
    'AudioDestinationNode',
    'AudioListener',
    'AudioNode',
    'AudioParam',
    'AudioProcessingEvent',
    'AutocompleteErrorEvent',
    'BarProp',
    'BatteryManager',
    'BeforeUnloadEvent',
    'BiquadFilterNode',
    'Blob',
    'blur',
    'btoa',
    'Cache',
    'caches',
    'CacheStorage',
    'cancelAnimationFrame',
    'CanvasGradient',
    'CanvasPattern',
    'CanvasRenderingContext2D',
    'CDATASection',
    'ChannelMergerNode',
    'ChannelSplitterNode',
    'CharacterData',
    'clearInterval',
    'clearTimeout',
    'clientInformation',
    'ClientRect',
    'ClientRectList',
    'ClipboardEvent',
    'close',
    'closed',
    'CloseEvent',
    'Comment',
    'CompositionEvent',
    'confirm',
    'console',
    'ConvolverNode',
    'Credential',
    'CredentialsContainer',
    'crypto',
    'Crypto',
    'CryptoKey',
    'CSS',
    'CSSAnimation',
    'CSSFontFaceRule',
    'CSSImportRule',
    'CSSKeyframeRule',
    'CSSKeyframesRule',
    'CSSMediaRule',
    'CSSPageRule',
    'CSSRule',
    'CSSRuleList',
    'CSSStyleDeclaration',
    'CSSStyleRule',
    'CSSStyleSheet',
    'CSSSupportsRule',
    'CSSTransition',
    'CSSUnknownRule',
    'CSSViewportRule',
    'customElements',
    'CustomEvent',
    'DataTransfer',
    'DataTransferItem',
    'DataTransferItemList',
    'Debug',
    'defaultStatus',
    'defaultstatus',
    'DelayNode',
    'DeviceMotionEvent',
    'DeviceOrientationEvent',
    'devicePixelRatio',
    'dispatchEvent',
    'document',
    'Document',
    'DocumentFragment',
    'DocumentTimeline',
    'DocumentType',
    'DOMError',
    'DOMException',
    'DOMImplementation',
    'DOMParser',
    'DOMSettableTokenList',
    'DOMStringList',
    'DOMStringMap',
    'DOMTokenList',
    'DragEvent',
    'DynamicsCompressorNode',
    'Element',
    'ElementTimeControl',
    'ErrorEvent',
    'event',
    'Event',
    'EventSource',
    'EventTarget',
    'external',
    'FederatedCredential',
    'fetch',
    'File',
    'FileError',
    'FileList',
    'FileReader',
    'find',
    'focus',
    'FocusEvent',
    'FontFace',
    'FormData',
    'frameElement',
    'frames',
    'GainNode',
    'Gamepad',
    'GamepadButton',
    'GamepadEvent',
    'getComputedStyle',
    'getSelection',
    'HashChangeEvent',
    'Headers',
    'history',
    'History',
    'HTMLAllCollection',
    'HTMLAnchorElement',
    'HTMLAppletElement',
    'HTMLAreaElement',
    'HTMLAudioElement',
    'HTMLBaseElement',
    'HTMLBlockquoteElement',
    'HTMLBodyElement',
    'HTMLBRElement',
    'HTMLButtonElement',
    'HTMLCanvasElement',
    'HTMLCollection',
    'HTMLContentElement',
    'HTMLDataListElement',
    'HTMLDetailsElement',
    'HTMLDialogElement',
    'HTMLDirectoryElement',
    'HTMLDivElement',
    'HTMLDListElement',
    'HTMLDocument',
    'HTMLElement',
    'HTMLEmbedElement',
    'HTMLFieldSetElement',
    'HTMLFontElement',
    'HTMLFormControlsCollection',
    'HTMLFormElement',
    'HTMLFrameElement',
    'HTMLFrameSetElement',
    'HTMLHeadElement',
    'HTMLHeadingElement',
    'HTMLHRElement',
    'HTMLHtmlElement',
    'HTMLIFrameElement',
    'HTMLImageElement',
    'HTMLInputElement',
    'HTMLIsIndexElement',
    'HTMLKeygenElement',
    'HTMLLabelElement',
    'HTMLLayerElement',
    'HTMLLegendElement',
    'HTMLLIElement',
    'HTMLLinkElement',
    'HTMLMapElement',
    'HTMLMarqueeElement',
    'HTMLMediaElement',
    'HTMLMenuElement',
    'HTMLMetaElement',
    'HTMLMeterElement',
    'HTMLModElement',
    'HTMLObjectElement',
    'HTMLOListElement',
    'HTMLOptGroupElement',
    'HTMLOptionElement',
    'HTMLOptionsCollection',
    'HTMLOutputElement',
    'HTMLParagraphElement',
    'HTMLParamElement',
    'HTMLPictureElement',
    'HTMLPreElement',
    'HTMLProgressElement',
    'HTMLQuoteElement',
    'HTMLScriptElement',
    'HTMLSelectElement',
    'HTMLShadowElement',
    'HTMLSourceElement',
    'HTMLSpanElement',
    'HTMLStyleElement',
    'HTMLTableCaptionElement',
    'HTMLTableCellElement',
    'HTMLTableColElement',
    'HTMLTableElement',
    'HTMLTableRowElement',
    'HTMLTableSectionElement',
    'HTMLTemplateElement',
    'HTMLTextAreaElement',
    'HTMLTitleElement',
    'HTMLTrackElement',
    'HTMLUListElement',
    'HTMLUnknownElement',
    'HTMLVideoElement',
    'IDBCursor',
    'IDBCursorWithValue',
    'IDBDatabase',
    'IDBEnvironment',
    'IDBFactory',
    'IDBIndex',
    'IDBKeyRange',
    'IDBObjectStore',
    'IDBOpenDBRequest',
    'IDBRequest',
    'IDBTransaction',
    'IDBVersionChangeEvent',
    'Image',
    'ImageBitmap',
    'ImageData',
    'indexedDB',
    'innerHeight',
    'innerWidth',
    'InputEvent',
    'InputMethodContext',
    'IntersectionObserver',
    'IntersectionObserverEntry',
    'Intl',
    'KeyboardEvent',
    'KeyframeEffect',
    'KeyframeEffectReadOnly',
    'length',
    'localStorage',
    'location',
    'Location',
    'locationbar',
    'matchMedia',
    'MediaElementAudioSourceNode',
    'MediaEncryptedEvent',
    'MediaError',
    'MediaKeyError',
    'MediaKeyEvent',
    'MediaKeyMessageEvent',
    'MediaKeys',
    'MediaKeySession',
    'MediaKeyStatusMap',
    'MediaKeySystemAccess',
    'MediaList',
    'MediaQueryList',
    'MediaQueryListEvent',
    'MediaSource',
    'MediaStream',
    'MediaStreamAudioDestinationNode',
    'MediaStreamAudioSourceNode',
    'MediaStreamEvent',
    'MediaStreamTrack',
    'menubar',
    'MessageChannel',
    'MessageEvent',
    'MessagePort',
    'MIDIAccess',
    'MIDIConnectionEvent',
    'MIDIInput',
    'MIDIInputMap',
    'MIDIMessageEvent',
    'MIDIOutput',
    'MIDIOutputMap',
    'MIDIPort',
    'MimeType',
    'MimeTypeArray',
    'MouseEvent',
    'moveBy',
    'moveTo',
    'MutationEvent',
    'MutationObserver',
    'MutationRecord',
    'name',
    'NamedNodeMap',
    'navigator',
    'Navigator',
    'Node',
    'NodeFilter',
    'NodeIterator',
    'NodeList',
    'Notification',
    'OfflineAudioCompletionEvent',
    'OfflineAudioContext',
    'offscreenBuffering',
    'onbeforeunload',
    'onblur',
    'onerror',
    'onfocus',
    'onload',
    'onresize',
    'onunload',
    'open',
    'openDatabase',
    'opener',
    'opera',
    'Option',
    'OscillatorNode',
    'outerHeight',
    'outerWidth',
    'PageTransitionEvent',
    'pageXOffset',
    'pageYOffset',
    'parent',
    'PasswordCredential',
    'Path2D',
    'performance',
    'Performance',
    'PerformanceEntry',
    'PerformanceMark',
    'PerformanceMeasure',
    'PerformanceNavigation',
    'PerformanceResourceTiming',
    'PerformanceTiming',
    'PeriodicWave',
    'Permissions',
    'PermissionStatus',
    'personalbar',
    'Plugin',
    'PluginArray',
    'PopStateEvent',
    'postMessage',
    'print',
    'ProcessingInstruction',
    'ProgressEvent',
    'PromiseRejectionEvent',
    'prompt',
    'PushManager',
    'PushSubscription',
    'RadioNodeList',
    'Range',
    'ReadableByteStream',
    'ReadableStream',
    'removeEventListener',
    'Request',
    'requestAnimationFrame',
    'requestIdleCallback',
    'resizeBy',
    'resizeTo',
    'Response',
    'RTCIceCandidate',
    'RTCSessionDescription',
    'RTCPeerConnection',
    'screen',
    'Screen',
    'screenLeft',
    'ScreenOrientation',
    'screenTop',
    'screenX',
    'screenY',
    'ScriptProcessorNode',
    'scroll',
    'scrollbars',
    'scrollBy',
    'scrollTo',
    'scrollX',
    'scrollY',
    'SecurityPolicyViolationEvent',
    'Selection',
    'self',
    'ServiceWorker',
    'ServiceWorkerContainer',
    'ServiceWorkerRegistration',
    'sessionStorage',
    'setInterval',
    'setTimeout',
    'ShadowRoot',
    'SharedKeyframeList',
    'SharedWorker',
    'showModalDialog',
    'SiteBoundCredential',
    'speechSynthesis',
    'SpeechSynthesisEvent',
    'SpeechSynthesisUtterance',
    'status',
    'statusbar',
    'stop',
    'Storage',
    'StorageEvent',
    'styleMedia',
    'StyleSheet',
    'StyleSheetList',
    'SubtleCrypto',
    'SVGAElement',
    'SVGAltGlyphDefElement',
    'SVGAltGlyphElement',
    'SVGAltGlyphItemElement',
    'SVGAngle',
    'SVGAnimateColorElement',
    'SVGAnimatedAngle',
    'SVGAnimatedBoolean',
    'SVGAnimatedEnumeration',
    'SVGAnimatedInteger',
    'SVGAnimatedLength',
    'SVGAnimatedLengthList',
    'SVGAnimatedNumber',
    'SVGAnimatedNumberList',
    'SVGAnimatedPathData',
    'SVGAnimatedPoints',
    'SVGAnimatedPreserveAspectRatio',
    'SVGAnimatedRect',
    'SVGAnimatedString',
    'SVGAnimatedTransformList',
    'SVGAnimateElement',
    'SVGAnimateMotionElement',
    'SVGAnimateTransformElement',
    'SVGAnimationElement',
    'SVGCircleElement',
    'SVGClipPathElement',
    'SVGColor',
    'SVGColorProfileElement',
    'SVGColorProfileRule',
    'SVGComponentTransferFunctionElement',
    'SVGCSSRule',
    'SVGCursorElement',
    'SVGDefsElement',
    'SVGDescElement',
    'SVGDiscardElement',
    'SVGDocument',
    'SVGElement',
    'SVGElementInstance',
    'SVGElementInstanceList',
    'SVGEllipseElement',
    'SVGEvent',
    'SVGExternalResourcesRequired',
    'SVGFEBlendElement',
    'SVGFEColorMatrixElement',
    'SVGFEComponentTransferElement',
    'SVGFECompositeElement',
    'SVGFEConvolveMatrixElement',
    'SVGFEDiffuseLightingElement',
    'SVGFEDisplacementMapElement',
    'SVGFEDistantLightElement',
    'SVGFEDropShadowElement',
    'SVGFEFloodElement',
    'SVGFEFuncAElement',
    'SVGFEFuncBElement',
    'SVGFEFuncGElement',
    'SVGFEFuncRElement',
    'SVGFEGaussianBlurElement',
    'SVGFEImageElement',
    'SVGFEMergeElement',
    'SVGFEMergeNodeElement',
    'SVGFEMorphologyElement',
    'SVGFEOffsetElement',
    'SVGFEPointLightElement',
    'SVGFESpecularLightingElement',
    'SVGFESpotLightElement',
    'SVGFETileElement',
    'SVGFETurbulenceElement',
    'SVGFilterElement',
    'SVGFilterPrimitiveStandardAttributes',
    'SVGFitToViewBox',
    'SVGFontElement',
    'SVGFontFaceElement',
    'SVGFontFaceFormatElement',
    'SVGFontFaceNameElement',
    'SVGFontFaceSrcElement',
    'SVGFontFaceUriElement',
    'SVGForeignObjectElement',
    'SVGGElement',
    'SVGGeometryElement',
    'SVGGlyphElement',
    'SVGGlyphRefElement',
    'SVGGradientElement',
    'SVGGraphicsElement',
    'SVGHKernElement',
    'SVGICCColor',
    'SVGImageElement',
    'SVGLangSpace',
    'SVGLength',
    'SVGLengthList',
    'SVGLinearGradientElement',
    'SVGLineElement',
    'SVGLocatable',
    'SVGMarkerElement',
    'SVGMaskElement',
    'SVGMatrix',
    'SVGMetadataElement',
    'SVGMissingGlyphElement',
    'SVGMPathElement',
    'SVGNumber',
    'SVGNumberList',
    'SVGPaint',
    'SVGPathElement',
    'SVGPathSeg',
    'SVGPathSegArcAbs',
    'SVGPathSegArcRel',
    'SVGPathSegClosePath',
    'SVGPathSegCurvetoCubicAbs',
    'SVGPathSegCurvetoCubicRel',
    'SVGPathSegCurvetoCubicSmoothAbs',
    'SVGPathSegCurvetoCubicSmoothRel',
    'SVGPathSegCurvetoQuadraticAbs',
    'SVGPathSegCurvetoQuadraticRel',
    'SVGPathSegCurvetoQuadraticSmoothAbs',
    'SVGPathSegCurvetoQuadraticSmoothRel',
    'SVGPathSegLinetoAbs',
    'SVGPathSegLinetoHorizontalAbs',
    'SVGPathSegLinetoHorizontalRel',
    'SVGPathSegLinetoRel',
    'SVGPathSegLinetoVerticalAbs',
    'SVGPathSegLinetoVerticalRel',
    'SVGPathSegList',
    'SVGPathSegMovetoAbs',
    'SVGPathSegMovetoRel',
    'SVGPatternElement',
    'SVGPoint',
    'SVGPointList',
    'SVGPolygonElement',
    'SVGPolylineElement',
    'SVGPreserveAspectRatio',
    'SVGRadialGradientElement',
    'SVGRect',
    'SVGRectElement',
    'SVGRenderingIntent',
    'SVGScriptElement',
    'SVGSetElement',
    'SVGStopElement',
    'SVGStringList',
    'SVGStylable',
    'SVGStyleElement',
    'SVGSVGElement',
    'SVGSwitchElement',
    'SVGSymbolElement',
    'SVGTests',
    'SVGTextContentElement',
    'SVGTextElement',
    'SVGTextPathElement',
    'SVGTextPositioningElement',
    'SVGTitleElement',
    'SVGTransform',
    'SVGTransformable',
    'SVGTransformList',
    'SVGTRefElement',
    'SVGTSpanElement',
    'SVGUnitTypes',
    'SVGURIReference',
    'SVGUseElement',
    'SVGViewElement',
    'SVGViewSpec',
    'SVGVKernElement',
    'SVGZoomAndPan',
    'SVGZoomEvent',
    'Text',
    'TextDecoder',
    'TextEncoder',
    'TextEvent',
    'TextMetrics',
    'TextTrack',
    'TextTrackCue',
    'TextTrackCueList',
    'TextTrackList',
    'TimeEvent',
    'TimeRanges',
    'toolbar',
    'top',
    'Touch',
    'TouchEvent',
    'TouchList',
    'TrackEvent',
    'TransitionEvent',
    'TreeWalker',
    'UIEvent',
    'URL',
    'URLSearchParams',
    'ValidityState',
    'VTTCue',
    'WaveShaperNode',
    'WebGLActiveInfo',
    'WebGLBuffer',
    'WebGLContextEvent',
    'WebGLFramebuffer',
    'WebGLProgram',
    'WebGLRenderbuffer',
    'WebGLRenderingContext',
    'WebGLShader',
    'WebGLShaderPrecisionFormat',
    'WebGLTexture',
    'WebGLUniformLocation',
    'WebSocket',
    'WheelEvent',
    'window',
    'Window',
    'Worker',
    'XDomainRequest',
    'XMLDocument',
    'XMLHttpRequest',
    'XMLHttpRequestEventTarget',
    'XMLHttpRequestProgressEvent',
    'XMLHttpRequestUpload',
    'XMLSerializer',
    'XPathEvaluator',
    'XPathException',
    'XPathExpression',
    'XPathNamespace',
    'XPathNSResolver',
    'XPathResult',
    'XSLTProcessor',
  ],
  worker: [
    'applicationCache',
    'atob',
    'Blob',
    'BroadcastChannel',
    'btoa',
    'Cache',
    'caches',
    'clearInterval',
    'clearTimeout',
    'close',
    'console',
    'fetch',
    'FileReaderSync',
    'FormData',
    'Headers',
    'IDBCursor',
    'IDBCursorWithValue',
    'IDBDatabase',
    'IDBFactory',
    'IDBIndex',
    'IDBKeyRange',
    'IDBObjectStore',
    'IDBOpenDBRequest',
    'IDBRequest',
    'IDBTransaction',
    'IDBVersionChangeEvent',
    'ImageData',
    'importScripts',
    'indexedDB',
    'location',
    'MessageChannel',
    'MessagePort',
    'name',
    'navigator',
    'Notification',
    'onclose',
    'onconnect',
    'onerror',
    'onlanguagechange',
    'onmessage',
    'onoffline',
    'ononline',
    'onrejectionhandled',
    'onunhandledrejection',
    'performance',
    'Performance',
    'PerformanceEntry',
    'PerformanceMark',
    'PerformanceMeasure',
    'PerformanceNavigation',
    'PerformanceResourceTiming',
    'PerformanceTiming',
    'postMessage',
    'Promise',
    'Request',
    'Response',
    'self',
    'ServiceWorkerRegistration',
    'setInterval',
    'setTimeout',
    'TextDecoder',
    'TextEncoder',
    'URL',
    'URLSearchParams',
    'WebSocket',
    'Worker',
    'XMLHttpRequest',
  ],

  // https://nodejs.org/api/globals.html
  node: [
    '__dirname',
    '__filename',
    'Buffer',
    'clearImmediate',
    'clearInterval',
    'clearTimeout',
    'console',
    'exports',
    'global',
    'module',
    'process',
    'require',
    'setImmediate',
    'setInterval',
    'setTimeout',
  ],
  commonjs: ['exports', 'module', 'require', 'global'],
  amd: ['define', 'require'],

  // https://mochajs.org/
  mocha: [
    'after',
    'afterEach',
    'before',
    'beforeEach',
    'context',
    'describe',
    'it',
    'mocha',
    'run',
    'setup',
    'specify',
    'suite',
    'suiteSetup',
    'suiteTeardown',
    'teardown',
    'test',
    'xcontext',
    'xdescribe',
    'xit',
    'xspecify',
  ],

  // https://jasmine.github.io/2.0/introduction.html
  jasmine: [
    'afterAll',
    'afterEach',
    'beforeAll',
    'beforeEach',
    'describe',
    'expect',
    'fail',
    'fdescribe',
    'fit',
    'it',
    'jasmine',
    'pending',
    'runs',
    'spyOn',
    'waits',
    'waitsFor',
    'xdescribe',
    'xit',
  ],
  jest: [
    'afterAll',
    'afterEach',
    'beforeAll',
    'beforeEach',
    'check',
    'describe',
    'expect',
    'gen',
    'it',
    'fit',
    'jest',
    'pit',
    'require',
    'test',
    'xdescribe',
    'xit',
    'xtest',
  ],
  qunit: [
    'asyncTest',
    'deepEqual',
    'equal',
    'expect',
    'module',
    'notDeepEqual',
    'notEqual',
    'notOk',
    'notPropEqual',
    'notStrictEqual',
    'ok',
    'propEqual',
    'QUnit',
    'raises',
    'start',
    'stop',
    'strictEqual',
    'test',
    'throws',
  ],
  phantomjs: ['console', 'exports', 'phantom', 'require', 'WebPage'],
  couch: [
    'emit',
    'exports',
    'getRow',
    'log',
    'module',
    'provides',
    'require',
    'respond',
    'send',
    'start',
    'sum',
  ],
  rhino: [
    'defineClass',
    'deserialize',
    'gc',
    'help',
    'importClass',
    'importPackage',
    'java',
    'load',
    'loadClass',
    'Packages',
    'print',
    'quit',
    'readFile',
    'readUrl',
    'runCommand',
    'seal',
    'serialize',
    'spawn',
    'sync',
    'toint32',
    'version',
  ],
  nashorn: [
    '__DIR__',
    '__FILE__',
    '__LINE__',
    'com',
    'edu',
    'exit',
    'Java',
    'java',
    'javafx',
    'JavaImporter',
    'javax',
    'JSAdapter',
    'load',
    'loadWithNewGlobal',
    'org',
    'Packages',
    'print',
    'quit',
  ],
  wsh: [
    'ActiveXObject',
    'Enumerator',
    'GetObject',
    'ScriptEngine',
    'ScriptEngineBuildVersion',
    'ScriptEngineMajorVersion',
    'ScriptEngineMinorVersion',
    'VBArray',
    'WScript',
    'WSH',
    'XDomainRequest',
  ],
  jquery: ['$', 'jQuery'],
  yui: ['Y', 'YUI', 'YUI_config'],
  shelljs: [
    'cat',
    'cd',
    'chmod',
    'config',
    'cp',
    'dirs',
    'echo',
    'env',
    'error',
    'exec',
    'exit',
    'find',
    'grep',
    'ls',
    'ln',
    'mkdir',
    'mv',
    'popd',
    'pushd',
    'pwd',
    'rm',
    'sed',
    'set',
    'target',
    'tempdir',
    'test',
    'touch',
    'which',
  ],
  prototypejs: [
    '$',
    '$$',
    '$A',
    '$break',
    '$continue',
    '$F',
    '$H',
    '$R',
    '$w',
    'Abstract',
    'Ajax',
    'Autocompleter',
    'Builder',
    'Class',
    'Control',
    'Draggable',
    'Draggables',
    'Droppables',
    'Effect',
    'Element',
    'Enumerable',
    'Event',
    'Field',
    'Form',
    'Hash',
    'Insertion',
    'ObjectRange',
    'PeriodicalExecuter',
    'Position',
    'Prototype',
    'Scriptaculous',
    'Selector',
    'Sortable',
    'SortableObserver',
    'Sound',
    'Template',
    'Toggle',
    'Try',
  ],
  meteor: [
    '$',
    '_',
    'Accounts',
    'AccountsClient',
    'AccountsServer',
    'AccountsCommon',
    'App',
    'Assets',
    'Blaze',
    'check',
    'Cordova',
    'DDP',
    'DDPServer',
    'DDPRateLimiter',
    'Deps',
    'EJSON',
    'Email',
    'HTTP',
    'Log',
    'Match',
    'Meteor',
    'Mongo',
    'MongoInternals',
    'Npm',
    'Package',
    'Plugin',
    'process',
    'Random',
    'ReactiveDict',
    'ReactiveVar',
    'Router',
    'ServiceConfiguration',
    'Session',
    'share',
    'Spacebars',
    'Template',
    'Tinytest',
    'Tracker',
    'UI',
    'Utils',
    'WebApp',
    'WebAppInternals',
  ],
  mongo: [
    '_isWindows',
    '_rand',
    'BulkWriteResult',
    'cat',
    'cd',
    'connect',
    'db',
    'getHostName',
    'getMemInfo',
    'hostname',
    'ISODate',
    'listFiles',
    'load',
    'ls',
    'md5sumFile',
    'mkdir',
    'Mongo',
    'NumberInt',
    'NumberLong',
    'ObjectId',
    'PlanCache',
    'print',
    'printjson',
    'pwd',
    'quit',
    'removeFile',
    'rs',
    'sh',
    'UUID',
    'version',
    'WriteResult',
  ],
  applescript: [
    '$',
    'Application',
    'Automation',
    'console',
    'delay',
    'Library',
    'ObjC',
    'ObjectSpecifier',
    'Path',
    'Progress',
    'Ref',
  ],
  serviceworker: [
    'caches',
    'Cache',
    'CacheStorage',
    'Client',
    'clients',
    'Clients',
    'ExtendableEvent',
    'ExtendableMessageEvent',
    'FetchEvent',
    'importScripts',
    'registration',
    'self',
    'ServiceWorker',
    'ServiceWorkerContainer',
    'ServiceWorkerGlobalScope',
    'ServiceWorkerMessageEvent',
    'ServiceWorkerRegistration',
    'skipWaiting',
    'WindowClient',
  ],
  atomtest: [
    'advanceClock',
    'fakeClearInterval',
    'fakeClearTimeout',
    'fakeSetInterval',
    'fakeSetTimeout',
    'resetTimeouts',
    'waitsForPromise',
  ],

  // https://guides.emberjs.com/v1.10.0/testing/test-helpers/
  embertest: [
    'andThen',
    'click',
    'currentPath',
    'currentRouteName',
    'currentURL',
    'fillIn',
    'find',
    'findWithAssert',
    'keyEvent',
    'pauseTest',
    'triggerEvent',
    'visit',
  ],
  protractor: ['$', '$$', 'browser', 'By', 'by', 'DartObject', 'element', 'protractor'],
  'shared-node-browser': ['clearInterval', 'clearTimeout', 'console', 'setInterval', 'setTimeout'],
  webextensions: ['browser', 'chrome', 'opr'],
  greasemonkey: [
    'GM_addStyle',
    'GM_deleteValue',
    'GM_getResourceText',
    'GM_getResourceURL',
    'GM_getValue',
    'GM_info',
    'GM_listValues',
    'GM_log',
    'GM_openInTab',
    'GM_registerMenuCommand',
    'GM_setClipboard',
    'GM_setValue',
    'GM_xmlhttpRequest',
    'unsafeWindow',
  ],
  flow: [
    'boolean',
    'number',
    'string',
    'null',
    'void',
    'mixed',
    'any',
    'empty',
    'Array',
    'Class',
    '$Call',
    '$TupleMap',
    '$ObjMap',
    '$ElementType',
    '$PropertyType',
    '$Rest',
    '$Diff',
    '$Exact',
    '$ReadOnly',
    '$ReadOnlyArray',
    '$Values',
    '$Keys',
    '$SuperType',
    '$Subtype',
    'RegExp$flags',
    'stream$Writable',
    'stream$Readable',
    'tty$WriteStream',
    'tty$ReadStream',
  ],
};
